package com.example.ordersystem.dao;


import com.example.ordersystem.domain.Comment;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
@Mapper
public interface CommentDAOByMybatis {

    /**
     * 查询所有的评价
     *
     * @return 以列表形式返回所有评价信息
     */
    @Select("select num,customerNum,orderNum,grade,content,picture from comments")
    List<Comment> findAllComments();


    /**
     * 查询所有的评价标签
     *
     * @return 以列表形式返回所有标签信息
     */
    @Select("select name,count from label")
    List<Comment.Label> findAllLabels();


    /**
     * 标签名加一
     *
     * @param name 标签名
     * @return 更新一条数据库基本表记录
     */
    @Update("update label set count=count+1 where name=#{name}")
    int labelPlusOneByName(@Param("name") String name);


    /**
     * 添加一条评价
     *
     * @param comment 待添加的评价
     * @return 评价的编号
     */
    @Insert("INSERT INTO comments(customerNum,orderNum,grade,content) VALUES" +
            " (#{customerNum}, #{orderNum},#{grade},#{content})")
    @Options(useGeneratedKeys = true, keyProperty = "num", keyColumn = "num")
    int addComment(Comment comment);


    /**
     * 根据评论编号更新评论配图
     * @param num 评论编号
     * @param picture 评论配图
     * @return 1 插入成功;0 插入失败
     */
    @Update("update comments set picture=#{picture} where num=#{num}")
    int updatePictureByNum(@Param("num") int num, @Param("picture") String picture);

    /**
     * 查询店铺整体评价
     * @return 平均评分
     */
    @Select("select avg(grade) from comments")
    int selectAverageGrade();
}
